package com.ai.service.cms.user;

import java.util.List;
import java.util.Map;

import com.ai.model.edu.cms.backoperator.OperatorRole;
import com.ai.model.edu.cms.backoperator.dto.OperatorRoleDTO;
import com.ai.model.edu.cms.backoperator.vo.OperatorRoleVO;

/**
 * Class Name : UserRoleService<br>
 * 
 * Description : 用户角色service 接口<br>
 * 
 * @author yangwb
 * @version $Revision$
 * @see
 *
 */
public interface OperatorRoleService {

    /**
     * Description ： 根据dto查询用户角色关系<br>
     * 
     * yangwb
     * 
     * @param userRoleDTO
     * @return
     * @since
     * 
     */
    public List<OperatorRoleVO> findUserRoleVOsByDTO(OperatorRoleDTO userRoleDTO);

    /**
     * Description ： 批量新增角色/用户关系
     * 
     * nyj
     * 
     * @param userRoles
     * @since
     *
     */
    public void addUserRoleBatch(List<OperatorRole> userRoles);

    /**
     * Description ： 根据backendOperatorId删除用户角色关系<br>
     * 
     * yangwb
     * 
     * @param backendOperatorId
     * @return
     * @since
     *
     */
    public int deleteUserRoleByBackOperatorId(Long backOperatorId);

    /**
     * Description ：新增角色角色用户关系
     * 
     * yangwb
     * 
     * @param OperatorRole operatorRole
     * @return
     * @since
     *
     */
    public void insert(OperatorRole operatorRole);

    /**
     * Description ：根据ID删除
     * 
     * yangwb
     * 
     * @param Long id
     * @return
     * @since
     *
     */
    public void deleteById(Long id);

    /**
     * Description ： 用户赋角色
     * 
     * nyj
     * 
     * @param role
     * @since
     *
     */
    public void addRole2User(OperatorRoleDTO operatorRoleDTO);

    /**
     * Description ：根据用户id和角色ids 查询该用户角色关系 <br>
     * 
     * yangwb
     * 
     * @param operatorRoleDTO
     * @return map : key:roleId;value:OperatorRoleVO
     * @since
     * 
     */
    public Map<Long, OperatorRoleVO> findOperatorRoleMap(OperatorRoleDTO operatorRoleDTO);

    /**
     * Description ：根据用户id 和角色ids 删除关系<br>
     * 
     * yangwb
     * 
     * @param backOperatorId
     * @param roleIds
     * @return
     * @since
     * 
     */
    public int removeOperatorRoleByRoleIdsAndOperatorId(Long backOperatorId, List<Long> roleIds);
}
